﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TVShow.Framework
{
  public interface IPlugin
  {
    string Name { get; }

    /// <summary>
    /// Start the plugin and load its settings from the ini file.
    /// </summary>
		void LoadPlugin(DisplayManager Display);

    /// <summary>
    /// Handles a program-wide Message
    /// </summary>
    /// <param name="Message"></param>
    void ProcessMessage(TVSMessage Event);


		///// <summary>
		///// Return true if this plugin is currently active.
		///// The definition of Active is different for different types of plugins.
		///// <para>An item with visual elements may be active when it's visible, and inactive when it's not.</para>
		///// <para>A remote plugin will be active when it responds to input from the remote</para>
		///// </summary>
		//bool PluginActive { get; }

    /// <summary>
    /// Shutdown this component.
    /// </summary>
    void ShutDown();
  }
}
